import axios from 'axios';
import store from '@/store/index';
import toast from '@/plugins/toast';
import Router from '@/router/index';

let Instance = axios.create({
    baseURL: process.env.VUE_APP_API_BASE_URL,
    headers: {}
});

Instance.interceptors.request.use((configure) => {
    let token = store.state.User.accessToken;
    if (token) {
        configure.headers['Authorization'] = "Bearer " + token;
    }
    return configure;
}, (error) => {
    return Promise.reject(error);
});
Instance.interceptors.response.use((response) => {
    // let data = response.data;
    // if (data.code !== 0 && data.success === false) {
    //     console.info(data.msg, toast);
    //     toast.error(data.msg);
    // }
    return response;
}, error => {
    let resp = error.response;
    if (!resp) {
        toast.error(error);
        return Promise.reject(error);
    }
    switch (resp.status) {
        case 400:
            toast.error('客户端请求的语法错误，服务器无法理解：' + resp.config.url);
            break;
        case 404:
            toast.error('请求资源不存在 犯人是：' + resp.config.url);
            break;
        case 405:
            toast.error('客户端请求中的方法被禁止 犯人是：' + resp.config.url);
            break;
        case 401:
            toast.error('请求要求用户的身份认证');
            store.commit('logout');
            Router.replace({name: 'Login'});
            break;
        case 403:
            toast.error('无权访问：403');
            break;
        case 500:
            toast.error('服务器内部错误 500 犯人是：' + resp.config.url);
            break;
        case 501:
            toast.error('服务器不支持请求的功能，无法完成请求 犯人是：' + resp.config.url);
            break;
        case 502:
            toast.error('网关错误：502');
            break;
        case 503:
            toast.error('服务器超载或系统维护');
            break;
    }

    return Promise.reject(error);
});

export default Instance;